1. Field of the Invention
This invention relates to a technique encompassing a methodology and an apparatus for allowing non-incremental computer source code to be compiled and to operate within an incremental type of computer system. In one embodiment, the technique of this invention allows Java(copyright) type computer source code to be compiled and made to operate within a Smalltalk(trademark) type computer system.
2. Discussion
Incremental computer systems, such as those which utilize the conventional and known Smalltalk(trademark) software programming language, are widely known and used within the computer industry. At the outset it should be realized that the terms xe2x80x9csystemxe2x80x9d and/or xe2x80x9ccomputer systemxe2x80x9d as used in this Application mean the cooperative combination of software and/or hardware and/or firmware which cooperatively and functionally allow a software program to be developed and to executed in order to achieve its various certain objectives. Moreover, as used in this Application, the term incremental language is meant to refer to a language which is utilized by a computer system which allows individual subroutines (e.g. methods, procedures, and/or functions) to be compiled and/or modified while the program is executing and/or running. A non-incremental language refers to a language which is utilized by a computer system which requires the computer program to be stopped from executing before subroutines are modified and/or compiled.
These incremental types of computer systems are favored, by many software developers and programmers, over non-incremental computer systems since they allow for method level compilations under which single methods or portions of the developed computer program may be sequentially and singularly compiled, run, modified, and/or analyzed. This allows the software methodology or program to be changed on a method by method basis, thereby allowing the programmer and/or software developer greater control over and greater flexibility in programming. These incremental software development systems also allow the program behavior to be modified while the program is operating or xe2x80x9crunningxe2x80x9d. These features, as are known to those of ordinary skill in the computer programming art, allow for enhanced error analysis of the programming code since one may inspect the various objects and data within a program as that program is executing or xe2x80x9crunningxe2x80x9d instead of stopping the program. Moreover, these features also allow one to evaluate the software program""s response (or the response of part of the program) to arbitrary expressions, such as the known xe2x80x9cdo-itxe2x80x9d type expressions, thereby allowing a software program developer to evaluate the program""s response to a known and/or preselected set of inputs or to different modifications, thereby increasing and/or enhancing program development efficiency as well as facilitating error analysis. These incremental program features also reduce overall compiler and/or development time since methods and/or program portions may be compiled separately and the program need not be xe2x80x9crestartedxe2x80x9d every time a change occurs to the program""s source code such as, without limitation, for testing purposes. Hence, these incremental types of computer systems allow relatively effective incremental compilation, interactive and/or dynamic xe2x80x9cdebuggingxe2x80x9d, and program browsing capabilities.
While these known incremental software programming languages and/or systems have many advantages, they are not as widely used as are many of the non-incremental systems, perhaps due to the fact that the non-incremental programming languages and/or non-incremental computer systems pre-date the incremental systems and that these two systems are so different that relatively few of the non-incremental program developers desire to so drastically change the type of computer system that they employ to develop computer programs. Accordingly, non-incremental software programming languages and/or non-incremental types of computer systems, such as Java(copyright), are widely used in many applications, such as and without limitation, Internet access. Moreover, such non-incremental systems usually require less memory and have relatively fast execution speed. In particular, Java(copyright) type systems have many advantages for use in a networked environment including, but not limited to, a byte code checking algorithm which allows for secure execution within a receiving computer and reduces the probability of viral destruction, and enhanced means for representing a graphical user interface in a platform independent manner. Accordingly, there exist some inherent advantages to the use of a non-incremental system and particularly a Java(copyright) type system. Therefore, each of the incremental and non-incremental systems, such as the Java(copyright) type system, has some unique advantages, depending upon the type of computer application program which is being developed. However, because there is such a great dissimilarity between these two computer systems there is and has been no motivation on the part of those skilled in the art to actually combine these systems. Applicants have recognized the utility in combining these systems as more fully explained in this Application and particularly have recognized the utility of including Smalltalk(trademark) and Java(copyright) system features.
There is therefore a need, as Applicants have recognized, for a computer system which allows and receives software programs developed and/or written by means of one or more non-incremental software languages and which contains the characteristics and advantages of the incremental computer systems. There is further a need for an integrated software development environment which is substantially similar to an incremental development environment and which may be used to create and/or develop non-incremental computer source code. Applicants"" invention(s) address these needs but should not construed as being limited in this manner. Rather, as more fully set forth below, Applicants have found that combining the advantages of each of these dissimilar computer development systems (incremental and non-incremental development systems) yields surprising, innovative, and unexpected results and advantages over the prior art. These results allow for relatively efficient software creation and/or development.
It is a first object of the invention to provide a computer system which allows software programs to be created and developed by use of at least one non-incremental computer language and which allows the created and developed software program to execute and be modified within an incremental system.
It is a second object of the invention to provide a computer system which allows software programs to be created and developed by use of at least one non-incremental computer language and to be compiled in a manner which allows the created program to execute within an incremental system.
It is a third object of the invention to provide a computer system which allows software programs to be created and developed by use of the Java(copyright) programming language and which further allows the created and/or developed Java(copyright) programs to become Smalltalk(trademark) compiled methods.
It is a fourth object of the invention to provide a computer system which combines the advantages of both incremental and non-incremental systems, such as, without limitation, by allowing source code to be developed in an incremental system and delivered in a manner which benefits from the advantages for a non-incremental system.
According to one aspect of the present invention, first means is provided for creating a software program by use of a non-incremental programming language. Second means is also provided, which is communicatively coupled to the first means, for converting the created software program into methods associated with incremental programs, effective to allow the created software program to execute as an incremental software program.
According to a second aspect of the present invention, a method is provided which comprises the steps of creating source code by use of a non-incremental software development system; receiving the created source code; modifying the received source code to an incremental language type code, formatting the received and modified source code within a certain parse tree structure; and executing the received and modified source code on an incremental computer system.
Further objects, features, and advantages of the present invention will become apparent from a consideration of the following description and the appended claims when taken in conjunction with the accompanying drawings.